using System.Runtime.Remoting.Messaging;
using GeYiHome.Db.DbBase;

namespace GeYiHome.Db.DbContent
{
    public class EcgContentFactory
    {
        //帮我们返回当前线程内的数据库上下文，如果当前线程内没有上下文，那么创建一个上下文，并保证
        //上线问实例在线程内部是唯一的
        public static UnitOfWork GetCurrentDbContext()
        {
            //CallContext：是线程内部唯一的独用的数据槽（一块内存空间）
            //传递DbContext进去获取实例的信息，在这里进行强制转换。
            var unitOfWork = CallContext.GetData("EcgCloudDbContextAndUnitOfWork") as UnitOfWork;
            if (unitOfWork == null) //线程在数据槽里面没有此上下文
            {
                unitOfWork = new UnitOfWork(); //如果不存在上下文的话，创建一个EF上下文
                //我们在创建一个，放到数据槽中去
                CallContext.SetData("EcgCloudDbContextAndUnitOfWork", unitOfWork);
            }
            return unitOfWork;
        }
    }
}
